import {PropsWithChildren} from 'react'; import { EventByUuidDocument, Module, ModuleDocument, Enum_Userspermissionsuser_Lang as SupportedLocales, } from '../../../generated/graphql'; import EventLayout, {TabComponent} from '../../../layouts/Event'; import useEventStore from '../../../stores/useEventStore'; import {Box, Container, Paper, useTheme} from '@mui/material'; import Head from 'next/head'; import {useSession} from 'next-auth/react'; import pageUtils from '../../../lib/pageUtils'; import {getLocaleForLang} from '../../../lib/getLocale'; interface Props { modulesSettings?: Module; eventUUID: string; announcement?: string; } const Page = (props: PropsWithChildren) => { return ; }; const PricesPage: TabComponent = ({modulesSettings}) => { const theme = useTheme(); const event = useEventStore(s => s.event); const session = useSession(); const profile = session?.data?.profile; const carosterPlusActivated = modulesSettings?.caroster_plus_enabled && event?.enabled_modules?.includes('caroster-plus'); if (!event && !carosterPlusActivated) return null; return ( {/* @ts-ignore */} ); }; export const getServerSideProps = pageUtils.getServerSideProps( async (context, apolloClient) => { const {uuid} = context.query; const {host = ''} = context.req.headers; let event = null; let modulesSettings = null; // Fetch event try { const {data} = await apolloClient.query({ query: EventByUuidDocument, variables: {uuid}, }); event = data?.eventByUUID?.data; } catch (error) { return { notFound: true, }; } // Fetch module settings try { const {data} = await apolloClient.query({ query: ModuleDocument, variables: {locale: context.locale}, }); modulesSettings = data?.module?.data?.attributes || {}; if (!modulesSettings?.caroster_plus_pricing_grid_id) { console.warn( 'Module settings are not set for locale: ', context.locale, ' fallback to English' ); const {data: enData} = await apolloClient.query({ query: ModuleDocument, variables: {locale: SupportedLocales['en']}, }); modulesSettings = enData?.module?.data?.attributes; } } catch (error) { console.error("Can't fetch config for module: ", error); } const description = await getLocaleForLang( event?.attributes?.lang, 'meta.description' ); return { props: { modulesSettings, eventUUID: uuid, metas: { title: event?.attributes?.name || '', description, url: `https://${host}${context.resolvedUrl}`, }, }, }; } ); export default Page;